#### 药物相关性分析#

setwd('父级路径')
if (!requireNamespace("corrplot", quietly = TRUE)) install.packages("corrplot")
if (!requireNamespace("Hmisc", quietly = TRUE)) install.packages("Hmisc")

library(corrplot)
library(Hmisc)

# CTRP2 <- read.table("DrugPredictions.CCLE_ExprTCGA.csv",sep = ",",check.names = F,stringsAsFactors = F,header = T)
# risk <- read.table("tcgariskscore.txt",sep = "\t",check.names = F,stringsAsFactors = F,header = T,row.names = 1)
# CTRP2[,1] <- substr(CTRP2[,1], 1, 16)
# dup_rows <- CTRP2[duplicated(CTRP2[, 1]), 1] ##因为输入数据里行名有重复，这四步为找到重复行名
# dup_suffix <- ave(dup_rows, dup_rows, FUN = seq_along)
# CTRP2[duplicated(CTRP2[, 1]), 1] <- paste0(dup_rows, ".", dup_suffix)
# rownames(CTRP2) <- gsub("-", ".", CTRP2[,1])
# CTRP2 <- CTRP2[,-1]
# comgene <- intersect(rownames(CTRP2),rownames(risk))
# risk <- risk[comgene,]
# CTRP2 <- CTRP2[comgene,]
# RISK2 <- risk$RISK
# mydata=cbind(RISK2, CTRP2)
# 
# res2 <- rcorr(as.matrix(mydata)) ##可以看到这个list里包含三个，r为相关性分数，p为pvalue
# r <- res2$r
# p <- res2$P
# write.table(p,file="p矩阵.txt",sep="\t",quote=F,col.names=T)
# write.table(r,file="r矩阵.txt",sep="\t",quote=F,col.names=T)
# ##相关性热图
# corr <- as.matrix(r)
# pvalue <- as.matrix(p)
# # 检查相关性矩阵和P值矩阵的维度
# # dim(corr)
# # dim(pvalue)
# pvalue[is.na(pvalue)] <- 1

M<-read.table("corrplottest.txt", header = T, sep = "\t", quote = "", check.names = F)
M<-as.matrix(M)


# addcol <- colorRampPalette(c("red", "green", "blue","brown"))
addcol <- colorRampPalette(c(颜色数组))
#绘图并保存
#pdf("plot.pdf", width = 8, height = 8)
#corrplot(corr, # 相关性矩阵
#         method = "color", # 表示用颜色表示相关性大小
#         col = addcol(100),
#         tl.col = "文字标签颜色", # 文本标签的颜色
#         tl.cex = 文本标签的字符大小, # 文本标签的字符大小0-1
#         tl.srt = 文本标签的旋转角度, #  文本标签的旋转角度
#        tl.pos = "td", # 文本标签位置，td表示顶部和对角线
#        p.mat = pvalue, #  P 值矩阵
#         diag = T, # 是否显示对角线上的相关性值
#         type = 'upper', # 只绘制上三角部分
#         sig.level = c(0.05), # 设置显著性水平阈值，可设置多个
#         pch.cex = 1,  # 显著性标记字符大小
#         pch.col = 'grey20',  # 显著性标记字符颜色
#         insig = 'label_sig',
#         order = 'AOE', #设置一种排序方式
#)
#dev.off()

# 添加一个保存图片使用
png(file="corrplotpng.png", width=980, height=980)
corrplot(M, # 相关性矩阵
         method = "color", # 表示用颜色表示相关性大小
         col = addcol(100),
         tl.col = "文字标签颜色", # 文本标签的颜色
         tl.cex = 文本标签的字符大小, # 文本标签的字符大小0-1
         tl.srt = 文本标签的旋转角度, #  文本标签的旋转角度
         tl.pos = "td", # 文本标签位置，td表示顶部和对角线
         #p.mat = pvalue, #  P 值矩阵
         diag = T, # 是否显示对角线上的相关性值
         type = 'upper', # 只绘制上三角部分
         sig.level = c(0.05), # 设置显著性水平阈值，可设置多个
         pch.cex = 1,  # 显著性标记字符大小
         pch.col = 'grey20',  # 显著性标记字符颜色
         insig = 'label_sig',
         order = 'AOE', #设置一种排序方式
)

dev.off()